19C - Deletion of Repeats - CodeForces Solution


greedy hashing string suffix structures *2200

Please click on ads to support us..

Python Code:

import sys
n=int(input())
a=list(map(int,input().split()))
M=10**9+1
g={}
for i in range(n):
    g[a[i]]=g.get(a[i],[])+[i]
p=[1]
for i in range(n):
    p+=[hash(M*p[-1])]
h=[0]*(n+1)
for i in range(n):
    h[i+1]=hash(h[i]*M+a[i])
gh=lambda k,l:hash(h[k+l]-h[k]*p[l])%sys.hash_info.modulus
i,t=0,0
while i < n:
    for j in g[a[i]]:
        if j <= i:
            continue
        w=j-i
        if j+w<=n and gh(i,w)==gh(j,w):
            i=j-1
            t=max(t,j)
            break
    i+=1
r=a[t:]
print(len(r))
print(*r)


Comments

Submit
0 Comments
More Questions

688B - Lovely Palindromes
66B - Petya and Countryside
1557B - Moamen and k-subarrays
540A - Combination Lock
1553C - Penalty
1474E - What Is It
1335B - Construct the String
1004B - Sonya and Exhibition
1397A - Juggling Letters
985C - Liebig's Barrels
115A - Party
746B - Decoding
1424G - Years
1663A - Who Tested
1073B - Vasya and Books
195B - After Training
455A - Boredom
1099A - Snowball
1651D - Nearest Excluded Points
599A - Patrick and Shopping
237A - Free Cash
1615B - And It's Non-Zero
1619E - MEX and Increments
34B - Sale
1436A - Reorder
1363C - Game On Leaves
1373C - Pluses and Minuses
1173B - Nauuo and Chess
318B - Strings of Power
1625A - Ancient Civilization